//
//  MXSStatusListVM.swift
//  weibo
//
//  Created by 孙飞 on 15/12/12.
//  Copyright © 2015年 Sunfei. All rights reserved.
//

import UIKit

class MXSStatusListVM: NSObject {

    // 模型数据就封装到这个 装有模型的数组
    var statusList: [MXSStatusVM]?
    
    //加载微博数据 & return 成功与失败信息
    func loadData(isPullUp: Bool, complete: (isSuccess: Bool, count: Int)->()){
        
        //****** 如果 isPullUp 是ture,代表是上拉加载,就取当前数组最后一个元素的id传给服务器，：当前控制器视图的最上面一条显示的数据
        
        var maxId = isPullUp == true ? (statusList?.last?.status?.id ?? 0) : 0
        
        //****** 因为,其接口的返回值比 maxId 小或等于max_id 的微博,为了避免重复数据,所以直接减1
        if maxId > 0 {
            maxId -= 1
        }
        // 下拉刷新用的 sinceId
        let sinceId = isPullUp == true ? 0 : (statusList?.first?.status?.id ?? 0)
        
        MXSNetworkTools.shareTools.loadStatus(MXSUserAccountVM.sharedAccount.accessToken!,sinceId:sinceId, maxid: maxId) { (response, error) -> () in
            if error != nil {
                printLog("\(error)")
                // 加载失败
                complete(isSuccess: false,count: 0)
                return
            }
            // 执行到这一步,就代表数据请求回来了
            
            guard let result = response as? [String: AnyObject] else {
                printLog("返回的数据不是一个字典")
                return
            }
            
            // 一个字典数据
            guard let statusDicts = result["statuses"] as? [[String: AnyObject]] else {
                printLog("没有statuses")
                return
            }
            var tempArray = [MXSStatusVM]()
            
            // 遍历数组,转成模型
            for value in statusDicts {
                let status = MXSStatus(dict: value)
                tempArray.append(MXSStatusVM(status: status))
            }
            
            printLog("加载回来的数量\(tempArray.count)")
            if self.statusList == nil {
                self.statusList = [MXSStatusVM]()
            }
            
            // 如果是上拉加载
            if isPullUp {
                // 拼接到数组的后面
                self.statusList = self.statusList! + tempArray
            }else{
                // 拼接到数组的前面
                self.statusList = tempArray + self.statusList!
            }
            
            complete(isSuccess: true,count: tempArray.count)

        }
    }
}
